var $contactMaintainTable = $('#contactMaintainTableList');

/**
 * (客服部)联系人维护--页面初始化
 */
$(function () {
    contactMaintainTableInit();
    // 高级筛选创建日期--配置参数
    $('.create-time').datepicker({
        language: "zh-CN",
        autoclose: true, //选择后自动关闭
        clearBtn: true,
        todayHighlight: true,
        ignoreReadonly: true,
        format: "yyyy-mm-dd"
    });

    $('#createTmStart').on('changeDate',function(){
        var startDate = $('#createTmStart').val();
        var endDate = $('#createTmEnd').val();
        if (endDate < startDate) {  // 对比结束日期和新的起止日期，起止日期大于结束日期则清空结束日期
            $('#createTmEnd').val('');
        }
        $('#createTmEnd').datepicker('destroy').datepicker({
            language: "zh-CN",
            autoclose: true, //选择后自动关闭
            clearBtn: true,
            todayHighlight: true,
            format: "yyyy-mm-dd",
            startDate: new Date(startDate)
        });
    });
    //加载全部公司信息(高级筛选所属分公司下拉)
    loadAllCompanyList();
});

/**
 * 联系人维护列表
 */
function contactMaintainTableInit(){
    //先销毁表格
    $contactMaintainTable.bootstrapTable('destroy');
    $contactMaintainTable.bootstrapTable({
        classes: 'table table-hover table-bordered table-striped',
        url: '/csd/contactMaintain/selectContactMaintainList',//请求地址
        method: 'post',//请求方式
        contentType: "application/x-www-form-urlencoded",//请求内容类型
        dataType: "json",//数据类型
        striped: true,//是否显示行间隔色
        sortable: true,//是否启用排序
        sortOrder: "desc",//排序方式
        sortName: 'createTm',//排序字段
        cache: false,//是否使用缓存
        showColumns: false,//显示隐藏列
        showRefresh: false,//显示刷新按钮
        showToggle: false,//切换显示样式
        showFooter: false,//显示Table脚部
        pagination: true,//是否显示分页
        maintainSelected: true,// 分页是否保留选中
        showPaginationSwitch: false,//是否显示分页按钮
        clickToSelect: true,//是否启用点击选中行
        singleSelect: false,
        minimumCountColumns: 2,//最少要显示的列数
        undefinedText: '-',//cell没有值时显示
        sidePagination: "server",//分页方式：client客户端分页，server服务端分页
        uniqueId: 'contactId',
        idField: 'contactId',
        serverSelected: true,// 开启后端分页记住已选项功能
        serverSelectedField: 'contactId',// 已选项的唯一识别主键
        pageSize: 10,//每页的记录行数
        pageNumber: 1,//初始化加载第1页，默认第1页
        pageList: [10,20],//可供选择的每页的行数
        queryParams: queryParams,//查询参数
        columns: [
            {   field : 'checked',
                checkbox: true,
                align: 'center',
                valign: 'middle',
                /*formatter:function(value,row,index){//设置满足条件的行可以使用复选框
                    if(row.isExamine !=0){
                        return {
                            disabled : true
                        }
                    }

                }*/
            },
            {title: '主键', field: 'contactId', visible: false},
            {title: '联系人名称',field: 'contactName', align: 'left', valign: 'middle'},
            {title: '联系方式', field: 'contactInformation', align: 'left', valign: 'middle'},
            {title: '所属客户', field: 'customerName', align: 'left', valign: 'middle'},
            {title: '客户类型', field: 'memberGradeText', align: 'left', valign: 'middle'},
            {title: '创建时间', field: 'createTm', align: 'left', valign: 'middle', sortable: true},
            {title: '职务', field: 'contactPosition', align: 'left', valign: 'middle'},
            {title: '所有人', field: 'ownerPeopleName', align: 'left', valign: 'middle'},
            {title: '所属分公司', field: 'companyName', align: 'left', valign: 'middle'},
            {title: '审核信息', field: 'isExamineText', align: 'left', valign: 'middle'},
            {title: '操作', field: 'operate', align: 'right',events: operateEvents,formatter:genderOpt,width:120}
        ],
        responseHandler: function (result) {
            if (result.code == "000000") {
                var obj = {
                    "rows": result.data,
                    "total": result.totalRecords//总条数
                };
            } else {
                var obj = {
                    "total": 0,
                    "rows": [],
                }
            }
            return obj;
        },
        onLoadSuccess: function () {
            //加载成功时执行
            $("[data-toggle='tooltip']").tooltip();//加这个是为了让操作列的提示图标显示在上方
        },
        onLoadError: function (status) {
            if (status == 403) {
                alert("权限不足！禁止访问！");
            } else {
                //加载失败时执行
                alert("加载失败！");
            }
        },
        formatLoadingMessage: function () {
            return "请稍等，加载中...";
        },
        formatNoMatches: function () {
            return '无符合条件的记录';
        },
    });
}

/**
 * 联系人维护列表--查询参数
 * @param params
 */
function queryParams(params) {
    params.pageSize = params.limit;
    params.pageIndex = (params.offset / params.limit) + 1;
    params.sortName = params.sort; //排序列名
    params.sortOrder = params.order;//排序方式

    //其他搜索条件
    params.contactOrCustomerName = $.trim($("#contactNameSearch").val());
    //高级筛选
    params.companyId = $("#companySelect").val();
    params.accountId = $("#userSelect").val();
    params.isExamine = $("#isExamine").val();
    params.createTmStart = $("#createTmStart").val();
    params.createTmEnd = $("#createTmEnd").val();
    return params;
}

/**
 * 联系人维护列表--自定义操作列内容
 */
function genderOpt(value, row, index) {
    let html = '<button type="button" class="btn-default activeBtn editBtn" id="edit">修改</button>';
    html += '<button type="button" class="btn-default activeBtn deleteBtn" id="delete">删除</button>';
    return html;
}

/**
 * 联系人维护列表--自定义操作列事件
 */
window.operateEvents = {
    'click #edit': function (e, value, row, index){
        $("#editInfoModal").modal("show");
        var bootstrapValidator = $("#updateInfoForm").data('bootstrapValidator');
        if (bootstrapValidator) {
            $("#updateInfoForm").data('bootstrapValidator').destroy();
            $('#updateInfoForm').data('bootstrapValidator', null);
        }
        updateInfoFormValidator();
        editInfoInit(row);
    },
    //删除点击事件
    'click #delete': function (e, value, row, index) {
        $.alert({
            title: '提示',
            content: "确定要删除吗？",
            buttons: {
                confirm: {
                    text: '确认',
                    btnClass: 'btn-primary',
                    action: function () {
                        $.ajax({
                            type: "post",
                            url: "/csd/contactMaintain/deleteContactByContactId",
                            data: {
                                contactId: row.contactId,
                                contactName: row.contactName,
                                customerId: row.customerId,
                                contactNature: row.contactNature
                            },
                            dataType: 'json',
                            success: function (data) {
                                if (data.code == '000000') {
                                    $.alert('删除成功!');
                                    contactMaintainTableInit();
                                } else {
                                    $.alert(data.message);
                                }
                            },
                            error: function () {
                                $.alert('删除失败，请稍后再试!');
                            }
                        });
                    }
                },
                cancel: {
                    text: '取消',
                    action: function () {
                    }
                }
            }
        })
    },
};
//修改页面初始化
function editInfoInit(obj){
   $("#contactName").val(obj['contactName']);
   $("#contactInformation").val(obj['contactInformation']);
   $("#contactId").text(obj['contactId']);
   $("#contactNature").text(obj['contactNature']);
   $("#customerId").text(obj['customerId'])

}

/**
 * 联系人维护--导出
 */
function exportContactMaintain(element){
    $(element).prop('disabled', true).html('<label><i class="mdi mdi-spin mdi-loading"></i></label>导出中，请稍后...');
    var paramsData = {
        contactOrCustomerName :  $.trim($('#contactNameSearch').val()), //联系人或客户
        companyId : $("#companySelect").val(),
        accountId : $("#userSelect").val(),
        isExamine : $("#isExamine").val(),
        createTmStart : $("#createTmStart").val(),
        createTmEnd : $("#createTmEnd").val()
    };

    paramsData = parseParam(paramsData);
    url = encodeURI('/csd/contactMaintain/exportContactMaintain?' + paramsData);

    var xhr = new XMLHttpRequest();
    xhr.open('GET', url, true);     // get请求，请求地址，是否异步
    xhr.responseType = 'blob';                    // 返回类型blob
    xhr.onload = function () {                    // 请求完成处理函数
        if (this.status === 200) {
            var blob = this.response;
            if (blob.type == 'application/json') {
                $.alert({
                    title: '失败提醒',
                    content: '系统异常，导出数据失败！',
                })
            } else {
                var time = new Date();
                var a = document.createElement('a');
                a.download = '联系人信息 ' + new Date(time).Format("yyyy-MM-dd hh_mm_ss") + '.xlsx';
                a.href = window.URL.createObjectURL(blob);
                a.click();
            }
            $(element).prop('disabled', false).html('<label><i class="mdi mdi-download"></i></label>导出');
        }
    };
    // 发送ajax请求
    xhr.send();
}

/**
 * 功能：json转url参数
 * */
function parseParam (param, key) {
    var paramStr = '';
    if (param instanceof String || param instanceof Number || param instanceof Boolean) {
        paramStr += '&' + key + '=' + param;
    } else {
        $.each(param, function(i) {
            var k = key == null ? i : key + (param instanceof Array ? '[' + i + ']' : '.' + i);
            paramStr += '&' + parseParam(this, k);
        });
    }
    return paramStr.substr(1);
}
//修改审核状态
function approveStatus(type){
    let approveText=type=='1'?'真实':'错误';
    let selectData=$contactMaintainTable.bootstrapTable("getServerSelected", true);
    if(selectData.length>0){
        $.confirm({
            title: '提示',
            content: `是否确认将审核状态改为'${approveText}'`,
            buttons: {
                confirm: {
                    text: '确认',
                    btnClass: 'btn-primary',
                    action: function () {
                        updateApproveStatus(type)
                    }
                },
                cancel: {
                    text: '取消',
                    btnClass: 'btn-primary',
                    action: function () {

                    }
                }
            }
        });
    }else{
        $.alert("请选择要审核的数据")
    }

}
//获得数据集合
function getDataStr(data,fileName){
    let arr=[];
    data.filter((item)=>{
        arr.push(item[fileName])
    });
    return arr.join()
}
function updateApproveStatus(type){
    let selectData=$contactMaintainTable.bootstrapTable("getServerSelected", true);
    let params={
        contactIds:getDataStr(selectData,'contactId') ,
        examineInfo:type
    };
    $.ajax({
        type: "post",
        url: "/csd/contactMaintain/updateExamineByIdsBatch",
        /*contentType: "application/json;charset=utf-8",*/
        /*data:JSON.stringify(params),*/
        data:params,
        dataType: 'json',
        success: function (data) {
            if (data.code == '000000') {
                $.alert('修改成功!');
                contactMaintainTableInit();
            } else {
                $.alert(data.message);
            }
        },
        error: function () {
            $.alert('修改失败，请稍后再试!');
        }
    });



}
//提交修改
function submitUpdate(){
    var bootstrapValidator = $("#updateInfoForm").data('bootstrapValidator');
    bootstrapValidator.validate();
    if (!bootstrapValidator.isValid()) {
        return;
    }
    let params={
        "contactId": $("#contactId").text(),//联系人ID(主键)
        "contactName": $.trim($("#contactName").val()),//联系人名称
        "contactInformation": $.trim($("#contactInformation").val()),//联系方式
        "contactNature": $("#contactNature").text(),//联系人性质0-企业联系人；1-个人联系人
        "customerId": $("#customerId").text()
    };
    $.ajax({
        type: "post",
        url: "/csd/contactMaintain/updateContactByContactId",
        contentType: "application/json;charset=utf-8",
        data: JSON.stringify(params),
        dataType: 'json',
        success: function (data) {
            if (data.code == '000000') {
                $.alert('修改成功!');
                contactMaintainTableInit();
                $("#editInfoModal").modal('hide')
            } else {
                $.alert(data.data);
            }
        },
        error: function () {
            $.alert('修改失败，请稍后再试!');
        }
    });
}
//修改字段不能为空
function updateInfoFormValidator(){
    $('#updateInfoForm').bootstrapValidator({
        fields: {
            contactName: {
                validators: {
                    notEmpty: {
                        message: '联系人名称不能为空'
                    }
                }
            },
            contactInformation: {
                validators: {
                    notEmpty: {
                        message: '联系方式不能为空'
                    }
                }
            }
        }
    })
}
function contrantNameSearchFun(){
    clearSearchData();
    contactMaintainTableInit();
    closeFilterContainer()
}
function localSearch(){
    $("#contactNameSearch").val('');
    contactMaintainTableInit();
    closeFilterContainer()
}
//清空搜索条件、重置查询条件
function clearSearchData(){
    $('#advanceFilterContainer input').val('');//清空--高级筛选input框
    $('#advanceFilterContainer select').val('').selectpicker('refresh');//清空--高级筛选select框
}

// 解决table中点击行选中与checkbox冲突问题
$('table').on('load-success.bs.table', function (e,data) {
    $(e.target).find('label.lyear-checkbox').on('click', function (e) {
        e.stopPropagation();
    })
});